package leecode.stringAndArray.doublepoint;

import java.util.Arrays;

/*给定一个含有n个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组[numsl, numsl+1, ..., numsr-1, numsr] ，并返回其长度。如果不存在符合条件的子数组，返回 0 。
*/
public class MinSubArrayLen {
    public static void main(String[] args) {
        int res = minSubArrayLen(7,new int[]{2,3,1,2,4,3});
        System.out.println(res);
    }

    public static int minSubArrayLen(int target, int[] nums) {
        int sum=0;
        int res=Integer.MAX_VALUE;
        int left=0,right=0;
        while(right<nums.length){
                sum+=nums[right++];
            //因为出栈的时候有时候会连续出好几次，所以这里不能用ifelse判断
            while (sum>=target) {
                res=Math.min(res,right-left);
                sum-=nums[left++];
            }
        }
        return res==Integer.MAX_VALUE?0:res;
    }
}
